package com.goldman.aplt.base.constant;


import java.math.BigDecimal;

/**
 * 应用层所有常量统一管理
 *
 * @author zw
 * @date 2017年8月8日
 */
public interface ApConstants {

    /**
     * dataMart字段公共运行变量固定写法
     */
    String RUN_ENVS = "RUN_ENVS";
    /**
     * redis获取uid key前缀
     */
    String UID_RDS_KEY_PREFIX = "AUTH:TOKEN:";
    String INFO_RDS_KEY_PREFIX = "AUTH:USER:";
    String CUSTNO_RDS_KEY_PREFIX = "GCB:CUST:TOKEN:";
    String COMM_RDS_TRANSFER_EMAIL_PREFIX = "COMM:TRANSFER:EAMIL:";
    String GMB_RDS_lOCK_PREFIX = "GMB:LOCK:";
    String PYS_RDS_lOCK_PREFIX = "PYS:LOCK:";
    String MKB_RDS_lOCK_PREFIX = "MKB:LOCK:";
    String GCB_RDS_lOCK_PREFIX = "GCB:LOCK:";
    String AP_RULE_PREFIX = "APRULE:";
    String TRXN_SEQ_CODE = "TRXN_SEQ";
    String CALL_SEQ_CODE = "CALL_SEQ";
    String CORE_URL_KEY = "CORE_URL_KEY";
    String BATCH_NO = "BATCH_NO";
    // 参数通配符
    String WILDCARD = "*";

    /**
     * 客户化参数信息(map object)
     */
    String ADDITIONAL_DATA_MART = "ADDITIONAL";

    // 数据集在 MspDroplist 中的定义
    String DATA_MART = "DATA_MART";

    // 客户信息集
    String CUST_DATA_MART = "CUSTOMER";

    // 客户信息集
    String BUSI_DATA_MART = "BUSINESS_TYPE";

    // 输入区数据集
    String INPUT_DATA_MART = "INPUT";

    // 营销相关数据集
    String MARKET_DATA_MART = "MARKET";
    // 参数数据集
    String PARM_DATA_MART = "PARM";

    // 货币代码数据集
    String CURRENCY_DATA_MART = "CURRENCY";

    // 账户数据集
    String ACCOUNT_DATA_MART = "ACCOUNT";

    // 子账户数据集
    String SUB_ACCOUNT_DATA_MART = "SUBACCT";

    // 借据信息集
    String LOAN_DATA_MART = "LOAN";

    // 卡数据集
    String CARD_DATA_MART = "CARD";

    // 限额数据集
    String LIMIT_DATA_MART = "LIMIT";

    // 指标数据集
    String METRIC_DATA_MART = "METRIC";

    // 反欺诈卡数据集
    String AFA_CARD_DATA_MART = "AFA_CARD";
    // 反欺客户数据集
    String AFA_CUST_DATA_MART = "AFA_CUST";
    // 反欺诈统计量数据集
    String AFA_PARA_DATA_MART = "AFA_PARA";
    // 反欺诈金融交易数据集
    String AFA_TRXN_DATA_MART = "AFA_TRXN";
    /**
     * 最大报文长度
     */
    int PCKG_MAX_LEN = 4000;
    /**
     * 缺省的最大日期
     */
    String DEFAULT_MAX_DATE = "20991231";
    /**
     * 交易码Key
     */
    //String PRCSCD_NAME_KEY = "trxn_code"; 
    /**
     * 批量的系统编码
     */
    String SYSTEM_BATCH = "999";

    /**
     * 默认页记录数
     */
    long DEFAULT_PAGE_SIZE = 20L;

    /**
     * 默认最大重试次数
     */
    int MAX_TXN_TRY_TIMES = 5;


    String API_ID = "api_id";
    /**
     * drs路由类型
     */
    /**
     * 客户号
     */
    String DRS_ROUTER_ECIF = "E";
    /**
     * 电子账号
     */
    String DRS_ROUTER_ACCOUNT = "A";
    /**
     * 卡号
     */
    String DRS_ROUTER_CARDNO = "C";
    /**
     * 证件类型+证件号
     */
    String DRS_ROUTER_IDENTIFICATION = "I";

    /**
     * 日终流程id
     */
    String hx_before = "hx_before";
    String hx_swday = "hx_swday";
    String hx_dayend = "hx_dayend";
    String gl_dayend = "gl_dayend";

    /**
     * 批量汇报事件Key
     */
    String dayendRepADM_event_key = "dayendRepADM";

    String dayendGLRepADM_event_key = "dayendGLRepADM";

    /**
     * 杂项参数通配符
     */
    String DEFAULT_SUB_KEY = "DEFAULT";

    /**
     * 动态下拉字典
     */
    String DYNAMIC_DROP_LIST = "DYNAMIC_DROP_LIST";

    /**
     * 外调服务
     */
    String TRANS_EVENT_OUTSVC = "OSVC";

    /**
     * 外调交易
     */
    String TRANS_EVENT_OUTTXN = "OTXN";

    /**
     * 交易控制错误ID
     */
    String TRXNCTRL_ERROR_ID = "MsBizEror.Online.E0009";

    String TRANS_SUCCESS_STATUS = "S";

    String TRANS_FAILED_STATUS = "F";

    String GLOBAL_DATABASE_ID = "GLOBAL";

    String RUNENVS_SHARE_FIELDS = "SHARERUNENV";

    /**
     * 尼日利亚币种
     */
    String BASE_CCY = "NGN";

    String BASE_COUNTRY = "NGA";

    String BASE_COUNTRY_NG = "NG";

    /**
     * 各个模块的拦截器执行顺序在此定义
     */
    int ICPORDER_US = 1;
    String BRANCH_CODE = "100000";

    String CORE_TIMEOUT_CODE = "999200";

    String CORE_USER = "MB0001";
    String CORE_SOURCE_TYPE = "MB";
    String CORE_CORPOR_SOURCE_TYPE = "CB";
    String CORE_CORPOR_USER = "CB0001";
    /**
     * 转换app展示枚举的链接符号
     */
    String ENUM_SYMBOL = "@";
    /**
     * 转换app展示枚举的描述属性名
     */
    String ENUM_DESC_ATTR_NAME = "longname";

    /**
     * 核心接口，统一单笔记账，- servDetailArray 数组，chargeMode 字段，表示收取标志，此处为 T-转账收取，枚举：
     * C-现金收取
     * T-转账收取
     * N-暂不收取
     * P-套餐内抵用
     */
    String TRANSFER_ACCOUNT = "T";

    //个人余额限制参数表的key值
    String PER_BAL_LIMIT = "PER_BAL_LIMIT";

    //个人转出延迟处理限制参数表的key值
    String PER_DAILY_DELAY_OUTWARD_LIMIT = "PER_DAILY_DELAY_OUTWARD_LIMIT";

    String PER_DAILY_OUTWARD_LIMIT = "PER_DAILY_OUTWARD_LIMIT";

    String LIMIT_SUB_KEY_4 = "signTfr";

    String LIMIT_SUB_KEY_5 = "signAndFinancial";


    //个人单笔转入金额限制参数表的key值
    String PER_SINGLE_INWARD_LIMIT = "PER_SINGLE_INWARD_LIMIT";

    //个人余额限制参数表的key值
    String COR_BAL_LIMIT = "COR_BAL_LIMIT";

    //个人转出延迟处理限制参数表的key值
    String COR_DAILY_DELAY_OUTWARD_LIMIT = "COR_DAILY_DELAY_OUTWARD_LIMIT";

    //个人单笔转入金额限制参数表的key值
    String COR_SINGLE_INWARD_LIMIT = "COR_SINGLE_INWARD_LIMIT";

    String CORE_NORECORD_ERROR = "MB4018";


    //个人转出延迟处理限制参数表的key值
//    String PER_DAILY_DELAY_OUTWARD_LIMIT = "PER_DAILY_DELAY_OUTWARD_LIMIT";

    String SUB_ACCOUNT_SEQ = "1";

    String UNFREEZE = "03";

    String FREEZE = "01";

    String RISK_AMT_LIMIT_KEY = "RISK_AMT_LIMIT";

    //外调超时时间，目前放55秒
    int CALL_OUT_TIMEOUT = 30 * 1000;


    String KYC = "kyc";
    final String APP_ID = "appId";
    final String APP_SECRECT = "appSecret";
    final String OTP = "otp";
    final String OTP_VERIFY_URL = "otpVerifyUrl";
    final String ENCRYPTION = "ENCRYPTION";
    final String DATA = "data";

    String FILTER_CALLOUT_LOG_KEY = "FILTER_CALLOUT_LOG";

    String CORPOR_ACCT_PREFIX = "8";
    String CORPOR_VIRACCT_PREFIX = "7";

    String NEWEAGE_INTERNAL_ACCT = "NEWEAGE_INTERNAL_ACCT";

    String AFTER_EOD_JOB_KEY = "AFTER_EOD_JOB";

    String EB_LOAN_ACCT = "EB_LOAN_ACCT";
    String EB_NEWEAGE_CORPOR_ACCT = "EB_NEWEAGE_CORPOR_ACCT";
    String EB_GOLDMAN_CORPOR_ACCT = "EB_GOLDMAN_CORPOR_ACCT";

    String PERSONAL_LOAN_INTERNAL_ACCT = "PERSONAL_LOAN_INTERNAL_ACCT";
    String LOAN_INTERNAL_ACCT_I_D = "LOAN_INTERNAL_ACCT_I_D";
    String LOAN_INTERNAL_ACCT_I_C = "LOAN_INTERNAL_ACCT_I_C";
    String LOAN_INTERNAL_ACCT_R_D= "LOAN_INTERNAL_ACCT_R_D";
    String LOAN_INTERNAL_ACCT_R_I_C = "LOAN_INTERNAL_ACCT_R_I_C";
    String LOAN_INTERNAL_ACCT_R_P_C = "LOAN_INTERNAL_ACCT_R_P_C";

    String LOAN_INTERNAL_ACCT_P_D= "LOAN_INTERNAL_ACCT_P_D";
    String LOAN_INTERNAL_ACCT_P_I_C = "LOAN_INTERNAL_ACCT_P_I_C";
    String LOAN_INTERNAL_ACCT_P_P_C = "LOAN_INTERNAL_ACCT_P_P_C";

    String LOAN_INTERNAL_ACCT_D_D= "LOAN_INTERNAL_ACCT_D_D";
    String LOAN_INTERNAL_ACCT_D_I_C = "LOAN_INTERNAL_ACCT_D_I_C";
    String LOAN_INTERNAL_ACCT_D_P_C = "LOAN_INTERNAL_ACCT_D_P_C";
    String EB_NEWEAGE_INTERNAL_ACCT = "EB_NEWEAGE_INTERNAL_ACCT";
    //虚拟子账户归集周期
    String UP_TIME = "010000";

    String ACTIVITY_LEADER_CUST_NO = "999999";
    int ACTIVIY_LOW_DAYS = 7;
    BigDecimal ACTIVIY_LOW_AMT = new BigDecimal(20000);

    String NIBSS_INTERNAL_BANK_CODE = "090574";
    String NIBSS_INTERNAL_BANK_NAME = "GOLDMAN MICROFINANCE BANK LTD";


    //个人贷款应计利息科目，也是核心内部户的产品类型
    String INDIVIDUALS_LOANS_ACCINT_GLCODE = "10600101";
    //个人贷款利息收入科目，也是核心内部户的产品类型
    String INDIVIDUALS_LOANS_INT_GLCODE = "50200101";
    //贷款减值损失科目，也是核心内部户的产品类型
    String LOAN_LOSS = "61100102";
    //贷款坏账拨备本金科目，也是核心内部户的产品类型
    String LOAN_PROVISION_PRI = "10410101";
    //贷款坏账拨备利息科目，也是核心内部户的产品类型
    String LOAN_PROVISION_INT = "10410201";
    //其他应收款项科目，也是核心内部户的产品类型
    String LOAN_ACCT_RECEIVABLE = "10710101";
}
